/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ucab.desarrollo.viajesbook.actions;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import twitter4j.TwitterException;
import ucab.desarrollo.viajesbook.AppContext;
import ucab.desarrollo.viajesbook.TwitterAdmin;
import ucab.desarrollo.viajesbook.TwitterGestion;
import ucab.desarrollo.viajesbook.negocio.UsuarioBO;
import ucab.desarrollo.viajesbook.beans.Usuario;
import ucab.desarrollo.viajesbook.negocio.IUsuarioBO;

/**
 *
 * @author isak
 */
public class UsuarioCrearAction extends ActionSupport
{
    private static final long serialVersionUID = 2228056990625416790L;

    private static final String USUARIO_CREADO= "Usuario Creado Exitosamente";

    private static final String ERROR_INTERNO = "Error interno. Por favor, inténtelo otra vez en unos minutos.";

    private String nombre;

    private String apellido;

    private String correo;

    private String clave;

    private Date fechanac;

    private String  genero;

    private String mensaje;

    private String loginTwitter;

    private String paginalogueo;

   private  String destino =null;

   private String pin;
 

    private List<String> generos = new ArrayList<String>();

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

     @Override
    public String execute()
    {
         String destino = INPUT;
         try
        {
             
           Usuario usuario = (Usuario)AppContext.getApplicationContext().getBean("usuario");
           usuario.setUsuarionombre(nombre);
           usuario.setUsuarioappellido(apellido);
           usuario.setUsuariocorreoelectronico(correo);
           usuario.setUsuariologin(clave);
           usuario.setUsuariofechanac(fechanac);
           usuario.setUsuariosexo(genero.charAt(0));
           usuario.setUsuariocuantaactiva(1);
           usuario.setUsuariofoto("img/person-icon.jpeg");
           usuario.setUsuariotwitterlogin(loginTwitter);

           Map session = ActionContext.getContext().getSession();
           TwitterAdmin token = (TwitterAdmin)session.get("token");          
           String direccion = usuario.getUsuariocorreoelectronico() + ".token";
           

           TwitterGestion archivo = new TwitterGestion();
           archivo.setTokenAcceso(token.guardarToken(pin));
           archivo.serializar(direccion);
           
           IUsuarioBO dao =(UsuarioBO)AppContext.getApplicationContext().getBean("usuarioBO");
           setMensaje(dao.guardarUsuario(usuario));
           destino = SUCCESS;
           
        }
        catch (Exception e)
        {
             setMensaje(ERROR_INTERNO);
        }

         
        return destino;
    }

      public String twitter()
      {
          destino = INPUT;

          TwitterAdmin  twitter = (TwitterAdmin) AppContext.getApplicationContext().getBean("twitterAdmin");
          try
            {

                paginalogueo = twitter.inicioTwitter();
                Map session = ActionContext.getContext().getSession();
                session.put("token", twitter);

            } 
          catch (TwitterException ex)
          {
            Logger.getLogger(UsuarioCrearAction.class.getName()).log(Level.SEVERE, null, ex);
          }

          return destino=SUCCESS;
      }


    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String inicializarGeneros()
    {
        generos.add("masculino");
        generos.add("femenino");

        return SUCCESS;
    }
    /**
     * @return the apellido
     */
    public String getApellido() {
        return apellido;
    }

    

    /**
     * @param apellido the apellido to set
     */
    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    /**
     * @return the correo
     */
    public String getCorreo() {
        return correo;
    }

    /**
     * @param correo the correo to set
     */
    public void setCorreo(String correo) {
        this.correo = correo;
    }

    /**
     * @return the clave
     */
    public String getClave() {
        return clave;
    }

    /**
     * @param clave the clave to set
     */
    public void setClave(String clave) {
        this.clave = clave;
    }

    /**
     * @return the fechanac
     */
    public Date getFechanac() {
        return fechanac;
    }

    /**
     * @param fechanac the fechanac to set
     */
    public void setFechanac(Date fechanac) {
        this.fechanac = fechanac;
    }
  

    /**
     * @return the mensaje
     */
    public String getMensaje() {
        return mensaje;
    }

    /**
     * @param mensaje the mensaje to set
     */
    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    /**
     * @return the generos
     */
    public List<String> getGeneros() {
        return generos;
    }

    /**
     * @param generos the generos to set
     */
    public void setGeneros(List<String> generos) {
        this.generos = generos;
    }

    /**
     * @return the genero
     */
    public String getGenero() {
        return genero;
    }

    /**
     * @param genero the genero to set
     */
    public void setGenero(String genero) {
        this.genero = genero;
    }

    /**
     * @return the loginTwitter
     */
    public String getLoginTwitter() {
        return loginTwitter;
    }

    /**
     * @param loginTwitter the loginTwitter to set
     */
    public void setLoginTwitter(String loginTwitter) {
        this.loginTwitter = loginTwitter;
    }

    /**
     * @return the paginalogueo
     */
    public String getPaginalogueo() {
        return paginalogueo;
    }

    /**
     * @param paginalogueo the paginalogueo to set
     */
    public void setPaginalogueo(String paginalogueo) {
        this.paginalogueo = paginalogueo;
    }

    /**
     * @return the pin
     */
    public String getPin() {
        return pin;
    }

    /**
     * @param pin the pin to set
     */
    public void setPin(String pin) {
        this.pin = pin;
    }



  
    
}
